<template>
  <AddOrEditDialog
    ref="addOrEditDialogRef"
    title="学期"
    :formHeader="formHeader"
    :form="form"
    :action="action"
    :url="$urls.API_URL_BACKSTAGE_SCHOOLTERM_MANAGE"
  >
    <template #expired>
      <div class="mb-2 flex items-center text-sm">
        <el-radio-group v-model="form.expired" class="ml-4">
          <el-radio label="true" size="large">是</el-radio>
          <el-radio label="false" size="large">否</el-radio>
        </el-radio-group>
      </div>
    </template>
  </AddOrEditDialog>
</template>

<script lang="ts" setup>
import AddOrEditDialog from '@/components/base/table/form/AddOrEditDialog.vue';
import { Role } from '@/types/interface/auth_interface';
import {
  defineExpose, defineProps, ref, withDefaults,
} from 'vue';
import { FormHeader } from '@/types/interface/base_interface';
import { SchoolTerm } from '@/types/interface/school_interface';
import { createLogger } from 'vuex';
import { yesOrNoDict } from '@/api/dict';

// const date = ref('');
  // 接收父容器参数
  interface Props {
    action?: string, // 表单的处理类型，post表示提交，put表示编辑
  }
const props = withDefaults(defineProps<Props>(), {
  action: 'post',
});
// console.log(`props${JSON.stringify(props)}`);
// 表单元素
const formHeader = ref<FormHeader[]>([
  {
    label: '学期',
    prop: 'name',
    rules: [
      {
        required: true,
        message: '不能为空',
        trigger: 'blur',
      },
      {
        min: 2,
        max: 15,
        message: '长度在 2 到 15个字符',
        trigger: 'blur',
      },
    ],
  },
  {
    label: '开始时间',
    prop: 'beginDate',
    type: 'date',
    // type: 'custom',
  },
  {
    label: '结束时间',
    prop: 'endDate',
    type: 'date',
  },
  {
    label: '学期简介',
    prop: 'intro',
    type: 'textarea',
  },
  {
    label: '是否被使用',
    prop: 'expired',
    type: 'custom',
  },
]);

// 表单对象
const form = ref<SchoolTerm>();
// console.log(`表单对象传入的值: ${JSON.stringify(form)}`); //不是这个
let formInit:SchoolTerm; // 记录表单第一次传入的值,用于表单重置恢复初始值使用
// 打开对话框，gong供父组件调用，传入表单对象
const addOrEditDialogRef = ref();
const openDialog = (schoolTerm:SchoolTerm) => {
  formInit = { ...schoolTerm }; // 获取初始值，这里要做深拷贝，避免与form对象引用的地址一致，导致无法恢复初始值
  form.value = { ...schoolTerm };
    addOrEditDialogRef.value!.openDialog();
};
  // 提交表单成功后的钩子函数
const afterSubmitSuccess = () => {
  // 让表单恢复为传入对象时的初始值，注意要深度拷贝，避免初始值收到污染
  form.value = { ...formInit };
};
  // 暴露组件给父容器使用
defineExpose({
  openDialog,
});
</script>

<style scoped>

</style>
